通过keil编译明白自己的程序占用的内存大小。堆栈大小分配,32单片机片内存储flash的使用。 | 您所在的位置:网站首页 › flash调整大小为原本的10 › 通过keil编译明白自己的程序占用的内存大小。堆栈大小分配,32单片机片内存储flash的使用。 |
目录
1.通过keil编译程序,得到自己代码需要单片机的flash和RAM大小2.在程序中调整堆栈的大小3.单片机片内flash的使用
1.通过keil编译程序,得到自己代码需要单片机的flash和RAM大小
所以本工程要求单片机 ROM(FLASH) > code+RO-data+RW-data RAM > RW-data+ZI-data 2.在程序中调整堆栈的大小对于堆栈大小的调整
FLASH擦除是按照扇区擦的,所以这个很重要,在工程中全局搜索 FLASH_PAGE_SIZE 宏就可以查看该芯片的页(扇区)大小,改宏在 stm32xxx_hal_flash.h中有定义 F1和F4系列的芯片FLASH在擦除后会是0xFFFFFFFF,而L1系列的芯片FLASH在擦除后是0x00000000!!! L1芯片内部FLASH编程速度比F1慢50倍!!!所以在使用L1芯片写入数据时相对于F1慢是正常的 STM32闪存的编程每次必须写入16位,任何不是半字的操作都会造成错误。 #include "FLSH.h" uint16_t EEPROM_data[20] = {0} ; //flash等待存储的数据 void WriteFlsh2B( uint16_t page, uint16_t * EEPROM_Data,uint16_t flash_byte) { uint32_t EEPROM_ADD = 0x08000000 + page * FLASH_PAGE_SIZE ; //1、解锁FLASH HAL_FLASH_Unlock(); //2、擦除FLASH //初始化FLASH_EraseInitTypeDef FLASH_EraseInitTypeDef f; f.TypeErase = FLASH_TYPEERASE_PAGES; f.PageAddress = EEPROM_ADD; f.NbPages = 1; //设置PageError uint32_t PageError = 0; //调用擦除函数 HAL_FLASHEx_Erase(&f, &PageError); for(short fo_i = 0 ; fo_i uint32_t EEPROM_ADD = 0x08000000 + page * FLASH_PAGE_SIZE ; for(short fo_i = 0 ; fo_i |
CopyRight 2018-2019 实验室设备网 版权所有 |